# -*- coding: utf-8 -*-
#当前所属项目：ailearning
#文件名：output-function
#当前用户：李峰
#当前时间：2025/9/21 17:32
#模块说明：借助函数进行输出解析
from pydantic import BaseModel,Field
from langchain_core.output_parsers import JsonOutputParser
from typing import Optional
from langchain_openai import ChatOpenAI
# from langchain_ollama import ChatOllama
# 定义结构化的输出格式
class Person(BaseModel):
    """关于一个人的身份信息"""
    name : str = Field(...,description="该人的姓名")
    age:int =Field(...,description="该人的年龄")
    fav_food:Optional[str]=Field(None,description="该人最喜欢食物")


llm = ChatOpenAI(model_name='qwen-plus', base_url="https://dashscope.aliyuncs.com/compatible-mode/v1", temperature=0.5,
                 api_key="sk-7b4f290b1a3e42a1a9a1957fa44eff37")
structured_llm = llm.with_structured_output(Person)
response = structured_llm.invoke("请提取一个人的信息：小丽13岁，最爱食物是苹果。")
print(response)